xs_write(ctx->xsh, t, libxl__sprintf(&gc, "%s/vm", dom_path), vm_path, strlen(vm_path));
rc = libxl_domain_rename(ctx, domid, info->name, preserved_name, t);
- if (rc) return rc;
+ if (rc) {
+ libxl__free_all(&gc);
+ return rc;
+ }
xs_write(ctx->xsh, t, libxl__sprintf(&gc, "%s/uuid", vm_path), uuid_string, strlen(uuid_string));
ret = xc_get_hvm_param(ctx->xch, domid, HVM_PARAM_ACPI_S_STATE, &acpi_s_state);
if (ret<0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting ACPI S-state");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
ret = xc_get_hvm_param(ctx->xch, domid, HVM_PARAM_CALLBACK_IRQ, &pvdriver);
if (ret<0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "getting HVM callback IRQ");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
if (!pvdriver || acpi_s_state != 0) {
ret = xc_domain_shutdown(ctx->xch, domid, req);
if (ret<0) {
LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "unpausing domain");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
}
char *uuid_string;
uuid_string = libxl__uuid2string(&gc, *uuid);
- if (!uuid_string)
+ if (!uuid_string) {
+ libxl__free_all(&gc);
return ERROR_NOMEM;
+ }
rc = xc_cpupool_create(ctx->xch, poolid, schedid);
if (rc) {
LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc,
"Could not create cpupool");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc,
"Error moving cpu to cpupool");
libxl_destroy_cpupool(ctx, *poolid);
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
}
libxl__sprintf(&gc, "/local/pool/%d/name", *poolid),
"%s", name);
- if (xs_transaction_end(ctx->xsh, t, 0) || (errno != EAGAIN))
+ if (xs_transaction_end(ctx->xsh, t, 0) || (errno != EAGAIN)) {
+ libxl__free_all(&gc);
return 0;
+ }
}
}
libxl_cpumap cpumap;
info = xc_cpupool_getinfo(ctx->xch, poolid);
- if (info == NULL)
+ if (info == NULL) {
+ libxl__free_all(&gc);
return ERROR_NOMEM;
+ }
rc = ERROR_INVAL;
if ((info->cpupool_id != poolid) || (info->n_dom))
libxl_cpumap_destroy(&cpumap);
out:
xc_cpupool_infofree(ctx->xch, info);
+ libxl__free_all(&gc);
return rc;
}
dom_path = libxl__xs_get_dompath(&gc, domid);
if (!dom_path) {
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
if (rc) {
LIBXL__LOG_ERRNOVAL(ctx, LIBXL__LOG_ERROR, rc,
"Error moving domain to cpupool");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
break;
}
+ libxl__free_all(&gc);
return 0;
}
}
dom_path = libxl__xs_get_dompath(&gc, domid);
- if (!dom_path)
+ if (!dom_path) {
+ libxl__free_all(&gc);
return ERROR_FAIL;
+ }
vm_path = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/vm", dom_path), NULL);
retry_transaction:
if (stat(filename, &st) < 0)
{
LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Unable to stat qemu save file\n");
+ libxl__free_all(&gc);
return ERROR_FAIL;
}
c = libxl_write_exactly(ctx, fd, QEMU_SIGNATURE, strlen(QEMU_SIGNATURE),
"saved-state file", "qemu signature");
- if (c)
+ if (c) {
+ libxl__free_all(&gc);
return c;
+ }
c = libxl_write_exactly(ctx, fd, &qemu_state_len, sizeof(qemu_state_len),
"saved-state file", "saved-state length");
- if (c)
+ if (c) {
+ libxl__free_all(&gc);
return c;
+ }
fd2 = open(filename, O_RDONLY);
while ((c = read(fd2, buf, sizeof(buf))) != 0) {